local logger = require("logger")

local function read_first_line(filename)
    local file = io.open(filename, "r")  -- 以只读模式打开文件
    if not file then
        logger.info("无法打开文件!")
        return '无法打开文件'
    end

    local content = file:read("a")  -- 读取文件的第一行
    file:close()  -- 关闭文件
    return content  -- 返回第一行的内容
end

-- 添加到候选
local function yield_cand(seg, text)
    local cand = Candidate('', seg.start, seg._end, text, '')
    -- 权重100
    cand.quality = 100
    yield(cand)
end

local local_custom_read_csv_func = {}

function local_custom_read_csv_func.init(env)
    local config = env.engine.schema.config
    env.name_space = env.name_space:gsub('^*', '')
    -- 使用键 env.name_space/funasr 查找并返回对应的字符串值 
    -- .. 是 Lua 中的字符串连接运算符，用来连接 env.name_space 和字符串 '/aaaa'。
    local_custom_read_csv_func.funasr = config:get_string(env.name_space .. '/funasr') or 'aaaa'
end

function local_custom_read_csv_func.func(input, seg, env)
    -- yield_cand(seg, '开始')
    if (input == local_custom_read_csv_func.funasr) then
        local line = read_first_line("D:/temp/funasr_output.txt")
        if line then
            yield_cand(seg, line)
        end
    end
    -- yield_cand(seg, '结束')
end

local function local_custom_func(input, seg, env)
    -- 获取 local_custom_func/local_custom 的第 2 个字符作为触发前缀
    -- env.custom_keyword = env.custom_keyword or
    --     env.engine.schema.config:get_string('local_custom_func/local_custom'):sub(2, 2)
    env.custom_keyword = env.custom_keyword or
        env.engine.schema.config:get_string('local_custom_func/custom_keyword')
    env.file_path = env.file_path or
        env.engine.schema.config:get_string('local_custom_func/file_path')
    -- 输入的 第一 与配置的 相同
    if env.custom_keyword ~= '' and input == env.custom_keyword then
        local line = read_first_line(env.file_path)
        if line then
            yield_cand(seg, line)
        end
        -- str = string.gsub(input, "^(%a+)", "")
    end
end

return local_custom_func